﻿using System;
using System.Drawing;

namespace DimensionsHelper.Common.Contracts.Excel.Options;

[Serializable]
public class FontStyleOptions
{
    /// <summary>
    ///     区域字体大小，如果不修改，设置为0.
    /// </summary>
    public float FontSize { get; set; } = 11f;

    /// <summary>
    ///     设置区域字体，如果不修改，设置为<see cref="string.Empty" />。
    /// </summary>
    public string FontFamily { get; set; } = string.Empty;

    /// <summary>
    ///     字体颜色，如果不更改颜色，设置为<see cref="Color.Empty" />。
    /// </summary>
    public ExcelStyleColor FontColor { get; set; } = ExcelStyleColor.Empty;

    /// <summary>
    ///     添加字体特殊样式，如果不添加，设置为<see cref="FontType.None" />。
    /// </summary>
    public FontType FontType { get; set; } = FontType.None;

    /// <summary>
    ///     字体添加下划线时的下划线样式，默认是<see cref="UnderLineType.Single" />。
    /// </summary>
    public UnderLineType UnderLine { get; set; } = UnderLineType.Single;

    /// <summary>
    ///     将给定字体样式和当前已有样式合并。
    /// </summary>
    /// <param name="styleOptions">给定合并的字体样式</param>
    /// <returns>合并后的字体样式</returns>
    public FontStyleOptions Merge(FontStyleOptions styleOptions)
    {
        var result = new FontStyleOptions();
        styleOptions.FontSize = FontSize > 0 ? FontSize : styleOptions.FontSize;
        styleOptions.FontFamily = string.IsNullOrEmpty(FontFamily) ? styleOptions.FontFamily : FontFamily;
        styleOptions.FontColor = FontColor == ExcelStyleColor.Empty ? styleOptions.FontColor : FontColor;
        styleOptions.FontType = FontType == FontType.None ? styleOptions.FontType : FontType;
        styleOptions.UnderLine = UnderLine == UnderLineType.None ? styleOptions.UnderLine : UnderLine;
        return result;
    }
}